1. Field of the Invention
The present invention relates generally to high speed data communications systems. More particularly, embodiments of the present invention relate to systems and methods for introducing user-defined errors in a designated data unit substantially in real time, so as to facilitate evaluation of the response of the high speed data communications system to errors such as are exemplified in the modified data unit.
2. Related Technology
Computer and data communications networks continue to proliferate due to declining costs, increasing performance of computer and networking equipment, and increasing demand for communication bandwidth. Communications networks—including wide area networks (“WANs”) and local area networks (“LANs”)—allow increased productivity and utilization of distributed computers or stations through the sharing of resources, the transfer of voice and data, and the processing of voice, data and related information at the most efficient locations. Moreover, as organizations have recognized the economic benefits of using communications networks, network applications such as electronic mail, voice and data transfer, host access, and shared and distributed databases are increasingly used as a means to increase user productivity. This increased demand, together with the growing number of distributed computing resources, has resulted in a rapid expansion of the number of installed networks.
As the demand for networks has grown, network technology has grown to include many different physical configurations. Examples include GigE (“GigE”), Fiber Distributed Data Interface (“FDDI”), Fibre Channel, and InfiniBand networks. These and the many other types of networks that have been developed typically utilize different cabling systems, different bandwidths and typically transmit data at different speeds. In addition, each of the different network types have different sets of standards, referred to as protocols, which set forth the rules for accessing the network and for communicating among the resources on the network.
Notwithstanding such distinctions, many of the network types share certain similar characteristics. For the most part, the “traffic stream,” sometimes also referred to as “network traffic” or a “data stream,” that is transmitted over a network medium includes several classes of digital data units or data packets, each of which has a predefined format. One type of data unit is referred to as an “Ordered Set.” An Ordered Set is a set of bits, normally ranging from 8 to 32 bits, in multiples of 8, that are used for various purposes. For example, within the Fibre Channel protocol, there are several types, including, OPN, CLS, RRDY and IDLE.
Another type of data unit is referred to as a “frame” (also referred to as “data frames” or “data packets”), which can be of fixed or variable length. Typically, data frames have headers and footers on the two ends of the frame, and a data portion, or data payload, disposed between the header and footer. Other information may also be included in the frame, such as information for error checking functions for example.
Typically, the specific layout or configuration of such a data frame is specified by the “physical layer protocol” of the network involved. For example, depending on the frame format, a frame can begin with a “Start of Frame” delimiter (SOF), which is followed by a header, then a frame data payload, then a Cyclical Redundancy Check (CRC), and then ending with an “End of Frame” delimiter (EOF). There are several types of SOFs and EOFs, any one of which may be included in a frame. A frame header can be the combination of a channel header, followed by other optional high level headers, and other, optional, application specific headers.
The frame header and data payload, as well as other components of the frame, include one or more bundles of data, also referred to as “words.” According to High (Speed Data Channel conventions, a word includes 32 bits, which is equivalent to 40 bits of serial data transfer on the network medium. The minimum size of a data packet component, such as a frame header or data payload, may vary depending upon the protocol or other requirements of the network over which the data packet is transmitted. Within the Fibre Channel protocol for example, the minimum size for such data packet components is 32 bits, or one word. As another example, the minimum size for data packet components within the GigE protocol is 8 bits.
Typically, transmissions between two network connected devices, for example, are passed through a hierarchy of protocol layers at each of the connected devices. Each layer in the first network connected device essentially carries on a conversation with a corresponding layer in the second network connected device, in accordance with an established protocol that defines the rules of communication between the layers.
For example, one well-known protocol standard is the Open Systems Interconnection (OSI) Model. OSI defines a seven-layer protocol model, which is widely used to describe and define how various vendors' products communicate. In the OSI model, the highest network layer is the Application Layer. The Application Layer is the level through which user applications, such as word processing programs or email programs for example, access network services. The next layer is the Presentation Layer which translates data from the Application Layer into an intermediate format and provides data encryption and compression services. The next layer is referred to as the Session Layer, which allows two applications on different network connected devices to communicate by establishing a dialog control between the two devices that regulates which side transmits, when each side transmits, and for how long. The next layer, the Transport Layer, is responsible for error recognition and recovery, repackaging of long messages into small packages of information, and providing an acknowledgement of receipt. The next layer is the Network Layer, which addresses messages, determines the route along the network from the source to the destination computer, and manages traffic problems, such as the switching and routing of data transmissions, as well as managing congestion that may occur as a result of such data transmissions.
It is the next layer, referred to as the Data Link Layer, which packages raw bits into the logical structured packages such as data packets or data frames, referred to above. The Data Link Layer corresponds, for example, to the GigE physical layer protocol noted above. This layer then sends the data frame or other data packet from one network connected device to another. The lowest layer in the hierarchal model is the Physical Layer, which is responsible for transmitting bits from one network connected device to another by regulating the transmission of a stream of bits over a physical medium such as a cable, optical fiber, or other type of conductor. The Physical Layer defines how the cable is attached to the network interface card within the network connected device and what transmission techniques are used to send data over the cable.
Thus, as a message comprising one or more data packets is passed down through each of these respective layers at the transmitting network-connected device, for example, and then back up through the protocol layers of the receiving network-connected device, each layer of the protocol(s) may add or strip off, as applicable, protocol information to/from the message. Thus, the “data” present within the data payload of the data frame at the Data Link Layer (e.g., the GigE data frame) typically comprises a protocol stack comprised of multiple message packets. Each message packet has its own protocol format, and it may in turn be embedded within the data payload of another higher layer message, also having its own different protocol.
As communication networks have increased in number, size and complexity however, they have become more likely to develop a variety of problems that are increasingly difficult to diagnose and resolve. Moreover, the demands for network operational reliability and increased network capacity, for example, emphasize the need for adequate diagnostic and remedial systems, methods and devices.
Exemplary causes of network performance problems include the transmission of unnecessarily small frames of information, inefficient or incorrect routing of information, improper network configuration and superfluous network traffic, to name just a few. Such problems are aggravated by the fact that many networks are continually changing and evolving due to growth, reconfiguration and introduction of new network typologies and protocols, as well as the use of new interconnection devices and software applications.
Consequently, as high speed data communications mature, many designs increasingly focus on reliability and performance issues. In particular, communications systems have been designed to respond to a variety of network errors and problems, thereby minimizing the occurrence of network failures and downtimes. In addition, equipment, systems and methods have been developed that allow for the testing and monitoring of the ability of a communications system to respond to and deal with specific types of error conditions on a network. In general, such equipment, systems, and methods provide the ability to selectively alter channel data, including the introduction of errors into channel data paths.
Thus, the use of such equipment permits monitoring of the response of the communications system to the altered data, and helps determine whether the communications system is capable of responding without experiencing adverse effects in performance such as loss of data or network traffic interruption. For example, a network system designer can perform any one of a number of different diagnostic tests to make determinations such as whether a system responded appropriately to incomplete, misplaced or missing tasks or sequences, how misdirected or confusing frames are treated, and how misplaced ordered sets are treated.
However, such diagnostic equipment, systems, and methods have not proven capable of dealing with the myriad of different and evolving protocol and network types. For example, to insure a realistic test environment, the equipment must be capable of injecting realistic errors in a manner that does not adversely affect the data transmission, or ‘line,’ rate of the network. In particular, such equipment should be capable of introducing errors into the network in substantially real time, so as to provide a realistic stress on the network. This has proven increasingly difficult given the present trend in communication network data transmission rates. Moreover, the introduction of errors into a network data stream must be accomplished in a predictable manner in order to yield useful results. This is especially difficult to accomplish with certain types of protocols, such as Gigabit Ethernet.
As noted above, the introduction of certain user-defined errors into a data stream is a useful method for performing various diagnostic and troubleshooting evolutions. In particular, because specific data packets can be tracked as they move through the high speed communications system, a user can readily track the data packet containing the error, and then observe the response of the system to the particular error contained in that package. Once the response of the system is known, the user can then modify the system as/if required to obtain a different response. By way of example, the system may be modified so that it will perform certain actions upon recognizing a data packet containing a particular error.
User-defined errors such as those described above may be introduced into the data packet in various ways and/or may take any of a variety of different forms. One technique that is employed in this regard is sometimes referred to as ‘truncation.’ Generally, truncation refers to a process wherein some aspect of the data packet is reduced in size, or truncated, so that while the data packet remains otherwise valid or ‘legal,’ it will be recognized, such as at a receiving device, as being somewhat shorter than the data packet that originated at the sending device. In many cases, this sort of evaluation performed at the receiving device takes the form of a cyclical redundancy check (CRC) or other error check process.
A number of factors guide the truncation process. One such factor relates to the ‘validity’ of the particular data packet that is to be modified. In particular, diagnostic processes such as those noted herein, rely for their effectiveness on the ability of the devices in the high speed communications system to recognize and process the data packet, even though it has been modified. An invalid or unrecognizable data packet cannot be tracked through the system because the system devices will likely discard or more such a data packet. Thus, truncation must be confined to those fields that, when modified, will not affect the validity of the data packet.
Consequently, truncation is often directed to the data payload of the data packet. In particular, because the size and content of the data payload are inherently variable, modifications to the data payload, such as by truncation, will not adversely affect the processing of the data packet by the devices of the high speed communications system. In the case of word aligned data streams for example, data payloads are typically truncated at a word boundary, so as to produce what is sometimes referred to as ‘wordwise’ truncation. Truncation in this manner is thus consistent with the nature of the data stream, and the devices in the high speed communications system are readily able to recognize the modified data packet and discern the truncation error.
However, it is desirable in some instances to ‘fine tune’ the truncation by truncating the data payload, for example, at a particular byte that occurs other than at a word boundary. Moreover, it may likewise be desirable to perform such truncation at various levels within the data packet such as, for example, at the IP and TCP levels. This is particularly so in the case of protocols, such as Gigabit Ethernet, that are based upon the use of unaligned data streams wherein the start of a data packet and/or one of its fields may occur at any byte within the data stream. Thus, because typical diagnostic systems and processes are generally only configured to implement wordwise truncation, and do not permit a user to truncate a data packet at the individual byte level, such systems and processes are inherently limited in terms of their flexibility.